local MapScan = require("core.MapScan")
local Obj = require("core.Obj")
-- ********************* 敌友关系区分扫描 ********************************

-- 扫描自己
function self(obj, callback, conditionFunc, maxCount, unit)
  if conditionFunc(obj, obj, unit) then
    callback(obj, obj, unit)
  end
end

local scan2,scan3,scan4 = MapScan.scan2,MapScan.scan3,MapScan.scan4

-- 根据自身阵营 扫描不同阵营
function autoConditionScan(obj, callback, conditionFunc, maxCount, unit)
  -- none(none good bad) bad(none good) good(none bad)

  if obj.camps == Obj.CAMPS_NONE then   --中间阵营
  
    --扫描三方阵营
    scan3(obj, callback, conditionFunc, maxCount, unit)
    
  elseif obj.camps == Obj.CAMPS_BAD then  --敌对阵营
  
    -- 扫描 中间阵营/友方阵营
    scan4(obj, callback, conditionFunc, maxCount, unit)
    
  elseif obj.camps == Obj.CAMPS_GOOD then --友方阵营
    
    -- 中间/敌方阵营
    scan2(obj, 0, callback, conditionFunc, maxCount, unit)
  else
    assert(nil, obj.camps)
  end
end

-- 根据自身阵营 扫描不同阵营(友方)
function autoConditionScan2(obj, callback, conditionFunc, maxCount, unit)
  -- none(none good bad) bad(none good) good(none bad)

  if obj.camps == Obj.CAMPS_NONE then   --中间阵营
  
    --扫描三方阵营
    scan3(obj, callback, conditionFunc, maxCount, unit)
    
  elseif obj.camps == Obj.CAMPS_BAD then  --敌对阵营
  
    -- 中间/敌方阵营
    scan2(obj, 0, callback, conditionFunc, maxCount, unit)
    
  elseif obj.camps == Obj.CAMPS_GOOD then --友方阵营
    -- 扫描 中间阵营/友方阵营
    scan4(obj, callback, conditionFunc, maxCount, unit)
  else
    assert(nil, obj.camps)
  end
end

        
_ENV[0] = MapScan.scan3     --0：无，无需判断敌友条件
_ENV[1] = self          --1：自己
_ENV[2] = autoConditionScan   --2：敌人，在当前攻击模式下可攻击的单位。
_ENV[3] = autoConditionScan   --3：敌方怪物，当前模式下可攻击的非玩家角色。
_ENV[4] = autoConditionScan   --4：敌方玩家，当前模式下可攻击的玩家角色。
_ENV[5] = autoConditionScan2  --5：队友，同一队伍下的玩家以及玩家宠物。
_ENV[6] = autoConditionScan2  --6：队友玩家，同一队伍下的玩家角色。
_ENV[7] = autoConditionScan2  --7：队友怪物，同一队伍下的非玩家角色。
_ENV[8] = autoConditionScan2  --8：队友宠物，同一队伍下的非玩家角色。
_ENV[9] = autoConditionScan2  --9：非敌方单位，当前模式下不可攻击的单位。
_ENV[10]= autoConditionScan2  --10：友方（阵营）
_ENV[11]= autoConditionScan2  --11：友方玩家与玩家宠物（阵营）(不包括怪物)
_ENV[12]= autoConditionScan2  --12: 主人
_ENV[13]= autoConditionScan2  --13: 自己或主人
